perm filename CRYPT.LST[S1,ALS] blob sn#487235 filedate 1979-12-05 generic text, type T, neo UTF8
PASCAL/SAIL 1.1    6-SEP-79    COMPILATION LIST PRODUCED ON 05-DEC-79  AT 08:53:32     PAGE  1

    1   C;

PASCAL/SAIL 1.1    6-SEP-79         COMPILATION LIST PRODUCED ON 05-DEC-79  AT 08:53:32     PAGE   2

    1   (* $A+,D+*)
    2   PROGRAM CRYPT;
    3   CONST   MAXA = 3;  MAXB = 5;  MAXC = 6;  MAXD = 15;  LIM = 20;
    4   VAR     I, J, K, L,LA, LB, M, N, CAR, HIT : INTEGER;
    5           A, B, C, D : ARRAY [0..LIM] OF INTEGER;
    6   PROCEDURE TESTHIT;
    7       BEGIN
    8       K := MAXC;
    9       WHILE C[K] = 0 DO K := K - 1;
   10       L := LA;
   11       FOR M := K DOWNTO 1 DO
   12           BEGIN
   13           L := L + 1;  D[L] := C[M];
   14           END;
   15       HIT := 0;
   16       FOR M := L DOWNTO LA DO
   17           FOR N := M-1 DOWNTO 1 DO
   18               IF D[M] = D[N] THEN HIT := HIT + 1;
   19       END;
   20   BEGIN (* MAIN PROGRAM*)
   21   WRITELN (OUTPUT,'POSSIBLE SOLUTIONS');
   22   WRITELN (OUTPUT);
   23   FOR I := 1 TO MAXD DO
   24       BEGIN
   25       A[I] := 0;  B[I] := 0;  C[I] := 0;  D[I] := 0;
   26       END;
   27   A[1] := 2;  B[1] := 2;  B[3] := 1;  CAR := 0;  I := 1;  J := 3;
   28   LB := 0;  HIT := 0;
   29   FOR M := J DOWNTO 1 DO 
   30       BEGIN
   31       LB := LB + 1;  D[LB] := B[M];
   32       END;
   33   WHILE CAR = 0 DO
   34       BEGIN
   35       LA := LB;
   36       FOR M := I DOWNTO 1 DO
   37           BEGIN
   38           LA := LA + 1;  D[LA] := A[M];
   39           END;
   40       FOR M := LA DOWN TO LB DO
  *****                    ↑         
               1.↑:  ILLEGAL SYMBOL 
   41           FOR N := M -1 DOWNTO 1 DO
   42               IF D[M] = D[N] THEM HIT := 1;
  *****                               ↑*********↑
               1.↑:  ILLEGAL SYMBOL 
               2.↑:  "THEN" EXPECTED
   43       K := J*2+I;
   44       IF ((K < 11) AND (K > 7) AND (HIT=0)) THEN 
   45           BEGIN
   46           IF (I + J) = 5 THEN     (* PRODUCT CASE IS IN RANGE*)
   47               BEGIN
   48               FOR K := 1 TO MAXD DO C[K] := 0;
   49               FOR M := 1 TO MAXA DO
   50                   FOR N := 1 TO MAXB DO
   51                       BEGIN
   52                       K := M + N - 1;
   53                       C[K] := A[M] * B[N] + C[K];
   54                       END;
   55               FOR K := 2 TO MAXC DO
   56                   BEGIN
   57                   C[K] := C[K] + C[K-1] DIV 10;
   58                   C[K-1] := C[K-1] MOD 10;
   59                   END;
   60               TESTHIT;
   61               IF (HIT = 0) AND (L = 10) THEN
   62                   BEGIN
   63                   WRITE (TTY,L:5,HIT:2,' * '); BREAK;
   64                   FOR M := I DOWNTO 1 DO WRITE (OUTPUT,A[M]:1);
   65                   WRITE (OUTPUT,' * ');
   66                   FOR M := J DOWNTO 1 DO WRITE (OUTPUT,B[M]:1);
   67                   WRITE (OUTPUT,' = ');
   68                   FOR M := K DOWNTO 1 DO WRITE (OUTPUT,C[M]:1);
   69                   WRITELN (OUTPUT);
   70                   END;
   71               END;                            (* PRODUCT CASE IN RANGE*)
   72           FOR K := 1 TO MAXD DO C[K] := 0;
   73           FOR K := 1 TO MAXC DO
   74               BEGIN
   75               C[K] := A[K] + B[K] + CAR;
   76               CAR := C[K] DIV 10;
   77               C[K] := C[K] MOD 10;
   78               END;
   79           TESTHIT;
   80           IF (HIT = 0) AND (L = 10) THEN
   81               BEGIN
   82               WRITE (TTY,L:5,HIT:2,' + '); BREAK;
   83               FOR M := I DOWNTO 1 DO WRITE (OUTPUT,A[M]:1);
   84               WRITE (OUTPUT,' + ');
   85               FOR M := J DOWNTO 1 DO WRITE (OUTPUT,B[M]:1);
   86               WRITE (OUTPUT,' = ');
   87               FOR M := K DOWNTO 1 DO WRITE (OUTPUT,C[M]:1);
   88               WRITELN (OUTPUT);
   89               END;
   90           END;     (*IF ((K < 11) AND (K > 7) AND (HIT=0)) *)
   91       CAR := 1;  HIT := 0;
   92       FOR I := 1 TO MAXA DO
   93           BEGIN
   94           A[I] := A[I] + CAR;
   95           CAR := A[I] DIV 10;
   96           A[I] := A[I] MOD 10;
   97           END;
   98       I := MAXD;
   99       WHILE A[I] = 0 DO I := I - 1;
  100       IF I = J THEN IF A[I]> B[J] THEN CAR := 1;
  101       IF CAR = 1 THEN
  102           BEGIN       (* CAR <> 0 *)
  103           FOR I := 2 TO MAXD DO A[I] := 0;
  104           I := 1;
  105           A[I] := 2;
  106           HIT := 1;  CAR := 0;
  107           WHILE ((HIT<>0) AND (CAR=0)) DO
  108               BEGIN
  109               CAR := 1;
  110               FOR J := 1 TO MAXB DO
  111                   BEGIN
  112                   B[J] := B[J] + CAR;
  113                   CAR := B[J] DIV 10;
  114                   B[J] := B[J] MOD 10;
  115                   END;
  116               J := MAXD;
  117               WHILE B[J] = 0 DO J := J - 1;
  118               LB := 0;  HIT := 0;
  119               FOR M := J DOWN TO 1 DO
  *****                           ↑        
               1.↑:  ILLEGAL SYMBOL 
  120                   BEGIN
  121                   LB := LB + 1;  D[LB] := B[M];
  122                   END;
  123               FOR M := LB DOWNTO 2 DO
  124                   FOR N := M-1 DOWNTO 1 DO
  125                       IF D[M] = D[N] THEN HIT := 1;
  126               END;    (* WHILE HIT<>0 AND CAR=0 *)
  127           END;    (* IF CAR = 1 *)
  128       END; (* WHILE CAR = 0 *)
  129   END.

   4 ERROR(S) DETECTED


RUNTIME: 00:00.447      ELAPSED: 00:00:02.7      3984 CHARS